package com.cskaoyan.javase.oop1._11static._0introduction;

/**
 * 案例:
 * 创建一个学生类，用来描述我们班全体同学，要求：
 * 		属性：姓名，性别，年龄，学号，学校信息
 * 		行为：吃饭，学习
 *
 * 创建多个Student对象，他们的属性取值可以不同，会发现什么问题呢？
 * 显然，我们会发现以下问题：
 * 无论创建多少Student对象，由于该类描述的是我们班全体同学，他们的班级信息实际上是一样的
 * 创建多次对象，需要重复的给一个属性赋相同的值，这是很麻烦的，不方便的。
 * 学校信息这个属性实质上应该是被全体同学所共有的属性，而不是独属于某个对象的。
 * 所以，按照我们以往定义成员变量的方法来定义"学校信息"这个属性，是不合适的！
 *
 * 我们需求一种全新的变量,这个变量不再是独属于对象的,而是属于类的,属于被全体类的对象所共享的.
 * 这就是Java代码中,使用static修饰的成员变量,称之为静态成员变量,简称"静态变量"
 *
 * @since 14:40
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Java46thStudent s1 = new Java46thStudent("张三");
        Java46thStudent s2 = new Java46thStudent("李四");
        System.out.println(s1.schoolName);
        System.out.println(s2.schoolName);
    }
}

class Java46thStudent {
    String name;
    // 性别,建议使用String gender
    /*
        性别是比较典型的二元性数据
        所以很多人习惯用:
        boolean isMale;
        boolean isFemale;
        实际上Java开发中,往往不推荐这种写法
     */
    String gender;
    int age;
    int stuId;
    String schoolName = "王道训练营";

    public Java46thStudent(String name) {
        this.name = name;
        // this.schoolName = schoolName;
        this.schoolName = "王道训练营";
    }

    public void eat() {
        System.out.println("吃完饭就去写代码!");
    }

    public void sleep() {
        System.out.println("你怎么睡得着的?");
    }
}
